package com.hua.argi;

import java.util.Arrays;

/**
 * @author: _hua
 * @created: 2019/3/25.
 * @updater:
 * @description:
 */
public class BubbleSort {

    public static int[] sort(int[] array){

        int temp;
        //循环多少轮
        for (int i=1;i<array.length;i++){
            //设定一个标记，若为true，则表示此次循环没有进行交换，也就是待排序列已经有序，排序已经完成。
            boolean flag=true;
            //对当前无序区间array[0......length-i]进行排序
            //j的范围很关键，这个范围是在逐步缩小的,因为每轮比较都会将最大的放在右边
            for(int j=0;j<array.length-i;j++){
                if (array[j]>array[j+1]){
                    temp =array[j];
                    array[j]=array[j+1];
                    array[j+1] = temp;
                    flag=false;
                }
            }
            if(flag){
                break;
            }
            //第 i轮排序的结果为
            System.out.print("第"+i+"轮排序后的结果为:");
            display(array);
        }
        return array;
    }
    public static void display(int[] array){
        Arrays.stream(array).forEach(System.out::println);
    }

    public static void main(String[] args) {
        int[] array = {4,2,8,9,5,7,6,1,3};
        //未排序数组顺序为
        System.out.println("未排序数组顺序为：");
        display(array);
        System.out.println("-----------------------");
        array = sort(array);
        System.out.println("-----------------------");
        System.out.println("经过冒泡排序后的数组顺序为：");
        display(array);
    }
}
